<!DOCTYPE html>
<html>

<head>
  <title>Quarkus - Guides</title>
  <script id="adobe_dtm" src="https://www.redhat.com/dtm.js" type="text/javascript"></script>
  <script src="/assets/javascript/highlight.pack.js" type="text/javascript"></script>
  <META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'none'; script-src 'self' 'unsafe-eval' 'sha256-ANpuoVzuSex6VhqpYgsG25OHWVA1I+F6aGU04LoI+5s=' 'sha256-ipy9P/3rZZW06mTLAR0EnXvxSNcnfSDPLDuh3kzbB1w=' js.bizographics.com https://www.redhat.com assets.adobedtm.com jsonip.com https://ajax.googleapis.com https://www.googletagmanager.com https://www.google-analytics.com https://use.fontawesome.com; style-src 'self' https://fonts.googleapis.com https://use.fontawesome.com; img-src 'self' *; media-src 'self' ; frame-src https://www.googletagmanager.com https://www.youtube.com; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'none'; font-src 'self' https://use.fontawesome.com https://fonts.gstatic.com;">
  <META HTTP-EQUIV='X-Frame-Options' CONTENT="DENY">
  <META HTTP-EQUIV='X-XSS-Protection' CONTENT="1; mode=block">
  <META HTTP-EQUIV='X-Content-Type-Options' CONTENT="nosniff">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Quarkus: Supersonic Subatomic Java">
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@QuarkusIO"> 
  <meta name="twitter:creator" content="@QuarkusIO">
  <meta property="og:url" content="https://quarkus.io/guides/" />
  <meta property="og:title" content="Quarkus - Guides" />
  <meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
  <meta property="og:image" content="/assets/images/quarkus_card.png" />
  <link rel="canonical" href="https://quarkus.io/guides/">
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" >
  <link rel="stylesheet" href="https://quarkus.io/guides/stylesheet/config.css" />
  <link rel="stylesheet" href="/assets/css/main.css" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  <link rel="alternate" type="application/rss+xml"  href="https://quarkus.io/feed.xml" title="Quarkus">
  <script src="https://quarkus.io/assets/javascript/goan.js" type="text/javascript"></script>
  <script src="https://quarkus.io/assets/javascript/hl.js" type="text/javascript"></script>
</head>

<body class="guides-index">
  <!-- Google Tag Manager (noscript) -->
  <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJWS5L"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->

  <div class="nav-wrapper">
  <div class="grid-wrapper">
    <div class="width-12-12">
      <input type="checkbox" id="checkbox" />
      <nav id="main-nav" class="main-nav">
  <div class="container">
    <div class="logo-wrapper">
      
        <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_600px_reverse.png" class="project-logo" title="Quarkus"></a>
      
    </div>
    <label class="nav-toggle" for="checkbox">
      <i class="fa fa-bars"></i>
    </label>
    <div id="menu" class="menu">
      <span>
        <a href="/get-started/" class="">Get Started</a>
      </span>
      <span>
        <a href="/guides/" class="active">Guides</a>
      </span>
      <span>
        <a href="/community/" class="">Community</a>
      </span>
      <span>
        <a href="/support/" class="">Support</a>
      </span>
      <span>
        <a href="/blog/" class="">Blog</a>
      </span>
      <span>
        <a href="https://code.quarkus.io" class="button-cta secondary white">Start Coding</a>
      </span>
    </div>
  </div>
      </nav>
    </div>
  </div>
</div>

  <div class="content">
    <a id="backToTop"><i class="fas fa-chevron-up"></i></a>

<div class="grid-wrapper guides">
  <div class="grid__item width-12-12">
    <h1 class="text-caps">Quarkus - Guides</h1>
  </div>

  <div class="grid__item width-6-12 width-12-12-m align-self-end">
    <div class="search-wrapper">
      <i class="fas fa-search"></i>
      <input type="text" id="search-text" placeholder="Find a Guide" />
    </div>
  </div>
  <div class="grid__item width-6-12 width-12-12-m callout-wrapper">
    <div class="grid-wrapper callout">
       <div class="grid__item width-12-12">
         <h3>Quarkus Cheat Sheet</h3>
       </div>
       <div class="grid__item col">
        <a href="https://lordofthejars.github.io/quarkus-cheat-sheet/" target="_blank">
          <span class="col-icon"><i class="far fa-file-pdf"></i></span>
          <span class="col-link">Download full cheatsheet as PDF</span>
        </a>
       </div>
       <div class="grid__item col">
         <a href="https://developers.redhat.com/search?t=quarkus&f=type%7Echeatsheet" target="_blank">Get more cheatsheets on the Red Hat Developers website <i class="fas fa-external-link-alt"></i></a>
       </div>
    </div>
  </div>
  
  <div class="grid__item width-2-12 width-12-12-m cat-list-label">
    <h3>View Category:</h3>
  </div>
  <div class="grid__item width-10-12 width-12-12-m guide-categories">
    <ul>
    
      <li>
        <a href="#core">Core</a>
      </li>
    
      <li>
        <a href="#web">Web</a>
      </li>
    
      <li>
        <a href="#data">Data</a>
      </li>
    
      <li>
        <a href="#messaging">Messaging</a>
      </li>
    
      <li>
        <a href="#security">Security</a>
      </li>
    
      <li>
        <a href="#business-automation">Business Automation</a>
      </li>
    
      <li>
        <a href="#integration">Integration</a>
      </li>
    
      <li>
        <a href="#command-line">Command Line Applications</a>
      </li>
    
      <li>
        <a href="#cloud">Cloud</a>
      </li>
    
      <li>
        <a href="#observability">Observability</a>
      </li>
    
      <li>
        <a href="#serialization">Serialization</a>
      </li>
    
      <li>
        <a href="#tooling">Tooling</a>
      </li>
    
      <li>
        <a href="#compatibility">Compatibility</a>
      </li>
    
      <li>
        <a href="#miscellaneous">Miscellaneous</a>
      </li>
    
      <li>
        <a href="#alternative-languages">Alternative Languages</a>
      </li>
    
      <li>
        <a href="#writing-extensions">Writing Extensions</a>
      </li>
    
    </ul>
  </div>
  <div class="grid__item width-12-12 guide-cards">
    <ul id="list">
    
      <li>
        <h3 id="core">Core</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/config"></a>
              <p class="title">Configuring Your Application</p>
              <div class="description"><p>Hardcoded values in your code is a no go (even if we all did it at some point ;-)). In this guide, we learn how to configure your application.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/all-config"></a>
              <p class="title">All Configuration Properties</p>
              <div class="description"><p>List all the configuration properties per extensions</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/lifecycle"></a>
              <p class="title">Application Initialization and Termination</p>
              <div class="description"><p>You often need to execute custom actions when the application starts and clean up everything when the application stops. This guide explains how to be notified when an application stops or starts.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/cdi"></a>
              <p class="title">Introduction to CDI</p>
              <div class="description"><p>Quarkus DI solution is based on the <a href="https://docs.jboss.org/cdi/spec/2.0/cdi-spec">Contexts and Dependency Injection for Java 2.0</a> specification. This guide explains the basics of CDI.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/cdi-reference"></a>
              <p class="title">CDI Reference</p>
              <div class="description"><p>Go more in depth into the Quarkus implementation of CDI.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/getting-started-testing"></a>
              <p class="title">Testing Your Application</p>
              <div class="description"><p>This guide covers:</p>

<ul>
  <li>Testing in JVM mode</li>
  <li>Testing in native mode</li>
  <li>Injection of resources into tests</li>
</ul>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/logging"></a>
              <p class="title">Configuring Logging</p>
              <div class="description"><p>This guide explains logging and how to configure it.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/command-mode-reference"></a>
              <p class="title">Command Mode Reference</p>
              <div class="description"><p>This reference guide explains how to develop command line applications with Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/native-and-ssl"></a>
              <p class="title">Using SSL With Native Images</p>
              <div class="description"><p>In this guide, we will discuss how you can get your native images to support SSL, as native images don’t support it out of the box.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/context-propagation"></a>
              <p class="title">Context Propagation</p>
              <div class="description"><p>Learn more about how you can pass contextual information with our implementation of MicroProfile Context Propagation.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/writing-native-applications-tips"></a>
              <p class="title">Writing Native Applications</p>
              <div class="description"><p>This guide is a collection of tips to help you solve the problems you encounter when compiling applications to native executable.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="web">Web</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/rest-json"></a>
              <p class="title">Writing REST JSON Services</p>
              <div class="description"><p>JSON is now the lingua franca between microservices. In this guide, we see how you can get your REST services to consume and produce JSON payloads.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/rest-data-panache"></a>
              <p class="title">Writing Simple REST CRUD Services</p>
              <div class="description"><p>Hibernate ORM REST Data with Panache simplifies the creation of CRUD applications based on JAX-RS and Hibernate ORM.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/validation"></a>
              <p class="title">Validation with Hibernate Validator</p>
              <div class="description"><p>This guide covers how to use Hibernate Validator/Bean Validation in your REST services.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/rest-client"></a>
              <p class="title">Using the REST Client (including JSON)</p>
              <div class="description"><p>This guide explains how to use the MicroProfile REST Client in order to interact with REST APIs (JSON and other) with very little effort.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/rest-client-multipart"></a>
              <p class="title">Using the REST Client with Multipart</p>
              <div class="description"><p>This guide explains how to use the MicroProfile REST Client to send multipart REST requests, typically to upload documents.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/security-jwt"></a>
              <p class="title">Using JWT RBAC</p>
              <div class="description"><p>This guide explains how your application can utilize MicroProfile JWT RBAC to provide secured access to the JAX-RS endpoints.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/websockets"></a>
              <p class="title">Using WebSockets</p>
              <div class="description"><p>This guide explains how your Quarkus application can utilize web sockets to create interactive web applications. Because it’s the canonical web socket application, we are going to create a simple chat application.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/openapi-swaggerui"></a>
              <p class="title">Using OpenAPI and Swagger UI</p>
              <div class="description"><p>This guide explains how to use the OpenAPI extension to generate an OpenAPI descriptor and get a Swagger UI frontend to test your REST endpoints.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/http-reference"></a>
              <p class="title">HTTP Reference Documentation</p>
              <div class="description"><p>Learn more about configuring Quarkus’ Vert.x based HTTP layer - and Undertow if you are using servlets.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/microprofile-fault-tolerance"></a>
              <p class="title">Using Fault Tolerance</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize the MicroProfile Fault Tolerance specification through the SmallRye Fault Tolerance extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/reactive-routes"></a>
              <p class="title">Using Reactive Routes</p>
              <div class="description"><p>This guide demonstrates how to use reactive routes.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/microprofile-graphql"></a>
              <p class="title">Consuming and Implementing GraphQL Services</p>
              <div class="description"><p>This guide explains how to leverage Eclipse MicroProfile GraphQL to consume and implement GraphQL services.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="data">Data</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/datasource"></a>
              <p class="title">Configuring your datasources</p>
              <div class="description"><p>With Quarkus, you can easily configure a datasource, or several if need be.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/hibernate-orm"></a>
              <p class="title">Using Hibernate ORM and JPA</p>
              <div class="description"><p>Hibernate ORM is the de facto JPA implementation and offers you the full breath of an Object Relational Mapper. It works beautifully in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/hibernate-orm-panache"></a>
              <p class="title">Simplified Hibernate ORM with Panache</p>
              <div class="description"><p>Hibernate ORM is the de facto JPA implementation and offers you the full breadth of an Object Relational Mapper.</p>

<p>It makes complex mappings possible, but it does not make simple and common mappings trivial.</p>

<p>Panache focuses on making your entities trivial and fun to write.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/hibernate-orm-panache-kotlin"></a>
              <p class="title">Simplified Hibernate ORM with Panache and Kotlin</p>
              <div class="description"><p>This explain the specifics of using Hibernate ORM with Panache in a Kotlin project.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/hibernate-search-elasticsearch"></a>
              <p class="title">Hibernate Search + Elasticsearch</p>
              <div class="description"><p>Hibernate Search allows you to index your entities in an Elasticsearch cluster and easily offer full text search in all your Hibernate ORM-based applications.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/transaction"></a>
              <p class="title">Using Transactions</p>
              <div class="description"><p>Quarkus comes with a Transaction Manager and uses it to coordinate and expose transactions to your applications.
Each extension dealing with persistence will integrate with it for you.
And you will explicitly interact with transactions via CDI.
This guide will walk you through all that.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/blaze-persistence"></a>
              <p class="title">Using Blaze-Persistence</p>
              <div class="description"><p>This guide explains how to use Blaze-Persistence to simplify your data and DTO layers.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/validation"></a>
              <p class="title">Validation with Hibernate Validator</p>
              <div class="description"><p>This guide covers how to use Hibernate Validator/Bean Validation in your REST services.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/cache"></a>
              <p class="title">Cache your application data</p>
              <div class="description"><p>This guide explains how to cache expensive method calls of your CDI beans using simple annotations.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/flyway"></a>
              <p class="title">Schema Migration with Flyway</p>
              <div class="description"><p>This guide covers how to use the Flyway extension to manage your schema migrations.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/liquibase"></a>
              <p class="title">Schema Migration with Liquibase</p>
              <div class="description"><p>This guide covers how to use the Liquibase extension to manage your schema migrations.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/infinispan-client"></a>
              <p class="title">Using Infinispan Client</p>
              <div class="description"><p>Infinispan is an in memory data grid that allows running in a server outside of application processes. This extension provides functionality to allow the client that can connect to said server when running in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/reactive-sql-clients"></a>
              <p class="title">Reactive SQL Clients</p>
              <div class="description"><p>This guide covers how to use the Reactive SQL Clients for MySQL and PostgreSQL in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/elasticsearch"></a>
              <p class="title">Elasticsearch Clients</p>
              <div class="description"><p>This guide covers how to use an Elasticsearch cluster using the low level or high level REST clients.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/mongodb"></a>
              <p class="title">MongoDB Client</p>
              <div class="description"><p>This guide covers how to use MongoDB in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/mongodb-panache"></a>
              <p class="title">MongoDB with Panache</p>
              <div class="description"><p>This guide covers the usage of MongoDB using active records and repositories.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/redis"></a>
              <p class="title">Redis Client</p>
              <div class="description"><p>This guide covers how to use a Redis datastore in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/neo4j"></a>
              <p class="title">Neo4j Client</p>
              <div class="description"><p>This guide covers how to use the Neo4j graph database in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/cassandra"></a>
              <p class="title">Apache Cassandra Client</p>
              <div class="description"><p>This guide covers how to use the Apache Cassandra NoSQL database in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-dynamodb"></a>
              <p class="title">Amazon DynamoDB</p>
              <div class="description"><p>This guide covers how to use the Amazon DynamoDB database in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-s3"></a>
              <p class="title">Amazon S3</p>
              <div class="description"><p>This guide covers how to use the Amazon S3 cloud storage in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/software-transactional-memory"></a>
              <p class="title">Using Software Transactional Memory</p>
              <div class="description"><p>This guides covers the usage of Software Transactional Memory (STM)</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="messaging">Messaging</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/kafka"></a>
              <p class="title">Using Apache Kafka</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize MicroProfile Reactive Messaging to interact with Apache Kafka.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amqp"></a>
              <p class="title">Using AMQP with Reactive Messaging</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize MicroProfile Reactive Messaging to interact with AMQP.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/kafka-streams"></a>
              <p class="title">Using Apache Kafka Streams</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize the Apache Kafka Streams API to implement stream processing applications based on Apache Kafka.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/reactive-event-bus"></a>
              <p class="title">Using the event bus</p>
              <div class="description"><p>This guide explains how different beans can interact using the event bus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/jms"></a>
              <p class="title">Using JMS</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can use JMS messaging with AMQP 1.0 using Apache Qpid JMS, or using Apache ActiveMQ Artemis JMS.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="security">Security</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/security"></a>
              <p class="title">Security Architecture and Guides</p>
              <div class="description"><p>This guide is the entry point for everything security in Quarkus.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="business-automation">Business Automation</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/kogito"></a>
              <p class="title">Using Kogito to add business automation capabilities to an application</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can use Kogito to add business automation to power it up with business processes and rules.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/optaplanner"></a>
              <p class="title">Using AI to optimize a schedule with OptaPlanner</p>
              <div class="description"><p>This guide walks you through the process of creating a Quarkus application with OptaPlanner’s constraint solving Artificial Intelligence (AI).</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="integration">Integration</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/camel"></a>
              <p class="title">Apache Camel</p>
              <div class="description"><p>This guide covers the systems integration with Apache Camel</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="command-line">Command Line Applications</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/command-mode-reference"></a>
              <p class="title">Command Mode Reference</p>
              <div class="description"><p>This reference guide explains how to develop command line applications with Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/picocli"></a>
              <p class="title">Picocli</p>
              <div class="description"><p>Simplify command line applications creation with the Picocli extension.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="cloud">Cloud</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/container-image"></a>
              <p class="title">Build Container Images</p>
              <div class="description"><p>Learn how to build and push container images with Jib, S2I or Docker as part of the Quarkus build.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/deploying-to-kubernetes"></a>
              <p class="title">Deploying Quarkus Applications on Kubernetes</p>
              <div class="description"><p>This guide covers how to deploy a native application on Kubernetes.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/deploying-to-openshift"></a>
              <p class="title">Deploying Quarkus Applications on OpenShift</p>
              <div class="description"><p>This guide covers how to deploy a native application on OpenShift.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/deploying-to-openshift-s2i"></a>
              <p class="title">Deploying to OpenShift using S2I</p>
              <div class="description"><p>This guide explains how to deploy a Quarkus application to OpenShift using S2I.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/getting-started-knative"></a>
              <p class="title">Deploying Native Applications on Knative Kubernetes or OpenShift</p>
              <div class="description"><p>This guide demonstrates how to deploy an application on Knative Kubernetes or OpenShift.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/kubernetes-config"></a>
              <p class="title">Consuming Kubernetes ConfigMaps</p>
              <div class="description"><p>Use ConfigMaps as a configuration source for your Quarkus applications.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/kubernetes-client"></a>
              <p class="title">Using the Kubernetes Client to Interact with a Kubernetes Cluster</p>
              <div class="description"><p>This guide demonstrates how to use the Fabric8 Kubernetes client to interact with your Kubernetes cluster.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/deploying-to-azure-cloud"></a>
              <p class="title">Deploying to Microsoft Azure Cloud</p>
              <div class="description"><p>This guide explains how to deploy a Quarkus application to Microsoft Azure Cloud.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/azure-functions-http"></a>
              <p class="title">Azure Functions (Serverless) with Vert.x Web, Servlet, or RESTEasy</p>
              <div class="description"><p>This guide explains how you can deploy Vert.x Web, Servlet, or RESTEasy microservices as an Azure Function.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-lambda"></a>
              <p class="title">Amazon Lambda</p>
              <div class="description"><p>This guide explains how you can deploy Quarkus-based Amazon Lambdas.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-lambda-http"></a>
              <p class="title">Amazon Lambda with Vert.x Web, Servlet, or RESTEasy</p>
              <div class="description"><p>This guide explains how you can deploy Vert.x Web, Servlet, or RESTEasy microservices as an Amazon Lambda.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/gcp-functions"></a>
              <p class="title">Google Cloud Functions</p>
              <div class="description"><p>This guide explains how you can deploy Quarkus-based Google Cloud Functions.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/gcp-functions-http"></a>
              <p class="title">Google Cloud Functions with Vert.x Web, Servlet, or RESTEasy</p>
              <div class="description"><p>This guide explains how you can deploy Vert.x Web, Servlet, or RESTEasy microservices as a Google Cloud Function.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy"></a>
              <p class="title">Quarkus Funqy</p>
              <div class="description"><p>This guide explains basics of the Funqy framework, a simple portable cross-provider cloud function API.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy-http"></a>
              <p class="title">Quarkus Funqy HTTP</p>
              <div class="description"><p>This guide explains Funqy’s HTTP binding</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy-amazon-lambda"></a>
              <p class="title">Quarkus Funqy Amazon Lambdas</p>
              <div class="description"><p>This guide explains Funqy’s Amazon Lambda binding</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy-amazon-lambda-http"></a>
              <p class="title">Quarkus Funqy Amazon Lambdas HTTP</p>
              <div class="description"><p>This guide explains Funqy’s Amazon Lambda HTTP binding</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy-knative-events"></a>
              <p class="title">Quarkus Funqy Knative Events</p>
              <div class="description"><p>This guide explains Funqy’s Knative Events binding</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy-azure-functions-http"></a>
              <p class="title">Quarkus Funqy Azure Functions HTTP</p>
              <div class="description"><p>This guide explains Funqy’s Azure Functions HTTP binding</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/funqy-gcp-functions"></a>
              <p class="title">Quarkus Funqy Google Cloud Platform</p>
              <div class="description"><p>This guide explains Funqy’s Google Cloud Platform binding</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-dynamodb"></a>
              <p class="title">Amazon DynamoDB</p>
              <div class="description"><p>This guide covers how to use the Amazon DynamoDB database in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-kms"></a>
              <p class="title">Amazon KMS</p>
              <div class="description"><p>This guide covers how to use the Amazon Key Management Service in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-s3"></a>
              <p class="title">Amazon S3</p>
              <div class="description"><p>This guide covers how to use the Amazon S3 cloud storage in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-ses"></a>
              <p class="title">Amazon SES</p>
              <div class="description"><p>This guide covers how to use the Amazon Simple Email Service in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-sns"></a>
              <p class="title">Amazon SNS</p>
              <div class="description"><p>This guide covers how to use the Amazon Simple Notification Service in Quarkus.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/amazon-sqs"></a>
              <p class="title">Amazon SQS</p>
              <div class="description"><p>This guide covers how to use the Amazon Simple Queue Service in Quarkus.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="observability">Observability</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/microprofile-health"></a>
              <p class="title">Using Health Check</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize the MicroProfile Health specification through the SmallRye Health extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/opentracing"></a>
              <p class="title">Using OpenTracing</p>
              <div class="description"><p>This guide explains how your Quarkus application can utilize OpenTracing to provide distributed tracing for interactive web applications.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/microprofile-metrics"></a>
              <p class="title">Collecting Metrics</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize the MicroProfile Metrics specification through the SmallRye Metrics extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/microprofile-fault-tolerance"></a>
              <p class="title">Using Fault Tolerance</p>
              <div class="description"><p>This guide demonstrates how your Quarkus application can utilize the MicroProfile Fault Tolerance specification through the SmallRye Fault Tolerance extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/logging-sentry"></a>
              <p class="title">Using Sentry to Monitor your Logs</p>
              <div class="description"><p>This guide explains how to use Sentry to monitor your application and be notified when exceptions occur.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/centralized-log-management"></a>
              <p class="title">Centralized Log Management</p>
              <div class="description"><p>This guide explains how to centralize your logs with Logstash or Fluentd using the Graylog Extended Log Format (GELF).</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="serialization">Serialization</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/rest-json"></a>
              <p class="title">Writing REST JSON Services</p>
              <div class="description"><p>JSON is now the lingua franca between microservices. In this guide, we see how you can get your REST services to consume and produce JSON payloads.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/grpc-getting-started"></a>
              <p class="title">Getting Started with gRPC</p>
              <div class="description"><p>This guide explains how to start using gRPC in your Quarkus application.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/grpc-service-implementation"></a>
              <p class="title">Implementing gRPC Services</p>
              <div class="description"><p>This guide explains how to implement gRPC services in your Quarkus application.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/grpc-service-consumption"></a>
              <p class="title">Consuming gRPC Services</p>
              <div class="description"><p>This guide explains how to consume gRPC services in your Quarkus application.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="tooling">Tooling</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/maven-tooling"></a>
              <p class="title">Building Applications with Maven</p>
              <div class="description"><p>This guide covers:</p>

<ul>
  <li>Maven configuration</li>
  <li>Creating a new project</li>
  <li>Dealing with extensions</li>
  <li>Development mode</li>
  <li>Debugging</li>
  <li>Import in your IDE</li>
  <li>Building a native image</li>
  <li>Build a container friendly executable</li>
</ul>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/gradle-tooling"></a>
              <p class="title">Building Applications with Gradle</p>
              <div class="description"><p>This guide covers:</p>

<ul>
  <li>Gradle configuration</li>
  <li>Creating a new project</li>
  <li>Dealing with extensions</li>
  <li>Development mode</li>
  <li>Debugging</li>
  <li>Import in your IDE</li>
  <li>Building a native image</li>
  <li>Build a container friendly executable</li>
</ul>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/tests-with-coverage"></a>
              <p class="title">Measuring the coverage of your tests</p>
              <div class="description"><p>This guide explains how to measure the test coverage of your Quarkus application.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="compatibility">Compatibility</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/spring-di"></a>
              <p class="title">Using the Quarkus Extension for Spring DI API</p>
              <div class="description"><p>While you are encouraged to use CDI annotations for injection, Quarkus provides a compatibility layer for Spring dependency injection in the form of the spring-di extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-web"></a>
              <p class="title">Using the Quarkus Extension for Spring Web API</p>
              <div class="description"><p>While you are encouraged to use JAX-RS annotations for defining REST endpoints, Quarkus provides a compatibility layer for Spring Web in the form of the spring-web extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-data-jpa"></a>
              <p class="title">Using the Quarkus Extension for Spring Data JPA API</p>
              <div class="description"><p>While you are encouraged to use Hibernate ORM with Panache for your data layer, Quarkus provides a compatibility layer for Spring Data JPA in the form of the spring-data-jpa extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-security"></a>
              <p class="title">Using the Quarkus Extension for Spring Security API</p>
              <div class="description"><p>While you are encouraged to use the Quarkus security layer to secure your applications, Quarkus provides a compatibility layer for Spring Security in the form of the spring-security extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-cache"></a>
              <p class="title">Using the Quarkus Extension for Spring Cache</p>
              <div class="description"><p>While you are encouraged to use the Cache extension for your application-level caching, Quarkus provides a compatibility layer for Spring Cache in the form of the spring-cache extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-scheduled"></a>
              <p class="title">Using the Quarkus Extension for Spring Scheduled</p>
              <div class="description"><p>While you are encouraged to use the Scheduler or Quartz extensions to schedule tasks, Quarkus provides a compatibility layer for Spring Scheduled in the form of the spring-scheduled extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-boot-properties"></a>
              <p class="title">Using Spring Boot's ConfigurationProperties</p>
              <div class="description"><p>Use Spring Boot’s <code class="highlighter-rouge">@ConfigurationProperties</code> in place of MicroProfile Config annotations</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/spring-cloud-config-client"></a>
              <p class="title">Using the Quarkus Extension for Spring Cloud Config</p>
              <div class="description"><p>Quarkus provides a compatibility layer for Spring Cloud Config in the form of the spring-cloud-config-client extension.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="miscellaneous">Miscellaneous</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/scheduler"></a>
              <p class="title">Scheduling Periodic Tasks</p>
              <div class="description"><p>Modern applications often need to run specific tasks periodically. In this guide, you learn how to schedule periodic tasks.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/scheduler-reference"></a>
              <p class="title">Scheduler Reference</p>
              <div class="description"><p>Learn more about the Scheduler extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/quartz"></a>
              <p class="title">Scheduling Clustered Tasks with Quartz</p>
              <div class="description"><p>You need clustering support for your scheduled tasks? This guide explains how to use the Quartz extension for that.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/mailer"></a>
              <p class="title">Sending Emails</p>
              <div class="description"><p>Learn more about how you can send email from a Quarkus application with our reactive email client.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/qute"></a>
              <p class="title">Templating with Qute</p>
              <div class="description"><p>Learn more about how you can use templating in your applications with the Qute template engine.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/qute-reference"></a>
              <p class="title">Qute Reference Guide</p>
              <div class="description"><p>Learn everything you need to know about the Qute template engine.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/tika"></a>
              <p class="title">Extracting Content with Apache Tika</p>
              <div class="description"><p>Learn more about how you extract content from documents using the Apache Tika toolkit.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/vertx"></a>
              <p class="title">Using Vert.x</p>
              <div class="description"><p>This guide explains how to use Vert.x in Quarkus to build reactive applications.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/jgit"></a>
              <p class="title">Access Git repositories with JGit</p>
              <div class="description"><p>This guide explains how you can access Git repositories with JGit.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/consul-config"></a>
              <p class="title">Consume Configuration from Consul</p>
              <div class="description"><p>This guide explains how your Quarkus application can read configuration properties at runtime from Consul.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/performance-measure"></a>
              <p class="title">Measuring Performance</p>
              <div class="description"><p>This guide explains how to best measure the footprint of a Quarkus application.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="alternative-languages">Alternative Languages</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="/guides/kotlin"></a>
              <p class="title">Using Kotlin</p>
              <div class="description"><p>This guide explains how to use Kotlin.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/hibernate-orm-panache-kotlin"></a>
              <p class="title">Simplified Hibernate ORM with Panache and Kotlin</p>
              <div class="description"><p>This explain the specifics of using Hibernate ORM with Panache in a Kotlin project.</p>
</div>
          </li>
        
        </ul>
      </li>
    
      <li>
        <h3 id="writing-extensions">Writing Extensions</h3>
        <ul class="grid-wrapper list-item">
        
          <li class="card">
              <a href="building-my-first-extension"></a>
              <p class="title">Building My First Extension</p>
              <div class="description"><p>Learn step by step how to build a simple extension.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/writing-extensions"></a>
              <p class="title">Writing Your Own Extension</p>
              <div class="description"><p>Quarkus extensions optimize your applications by pushing as much work as possible to the build operation. This guide explains the rationale of Quarkus extensions and guides you through authoring your own extensions.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/writing-native-applications-tips"></a>
              <p class="title">Writing Native Applications</p>
              <div class="description"><p>This guide is a collection of tips to help you solve the problems you encounter when compiling applications to native executable.</p>
</div>
          </li>
        
          <li class="card">
              <a href="/guides/class-loading-reference"></a>
              <p class="title">Class Loading Reference</p>
              <div class="description"><p>Learn more about Quarkus class loading infrastructure.</p>
</div>
          </li>
        
        </ul>
      </li>
    
  </ul>
  <div class="empty-list">Sorry, no guides matched your search. Please try again.</div>
  </div>
</div>

  </div>

  <div class="content project-footer">
  <div class="footer-section">
    <div class="logo-wrapper">
      <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_reverse.svg" class="project-logo" title="Quarkus"></a>
    </div>
  </div>
  <div class="grid-wrapper">
    <p class="grid__item width-3-12">Quarkus is open. All dependencies of this project are available under the <a href='https://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache Software License 2.0</a> or compatible license.<br /><br />This website was built with <a href='https://jekyllrb.com/' target='_blank'>Jekyll</a>, is hosted on <a href='https://pages.github.com/' target='_blank'>Github Pages</a> and is completely open source. If you want to make it better, <a href='https://github.com/quarkusio/quarkusio.github.io' target='_blank'>fork the website</a> and show us what you’ve got.</p>

    
      <div class="width-1-12 project-links">
        <span>Navigation</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="/">Home</a></li>
          
            <li><a href="/guides">Guides</a></li>
          
            <li><a href="/community/#contributing">Contribute</a></li>
          
            <li><a href="/faq">FAQ</a></li>
          
            <li><a href="/get-started">Get Started</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Contribute</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://twitter.com/quarkusio">Follow us</a></li>
          
            <li><a href="https://github.com/quarkusio">GitHub</a></li>
          
            <li><a href="/security">Security&nbsp;policy</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Get Help</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://groups.google.com/forum/#!forum/quarkus-dev">Forums</a></li>
          
            <li><a href="https://quarkusio.zulipchat.com">Chatroom</a></li>
          
        </ul>
      </div>
    

    
      <div class="width-3-12 more-links">
        <span>Quarkus is made of community projects</span>
        <ul class="footer-links">
          
            <li><a href="https://vertx.io/" target="_blank">Eclipse Vert.x</a></li>
          
            <li><a href="https://microprofile.io" target="_blank">Eclipse MicroProfile</a></li>
          
            <li><a href="https://hibernate.org" target="_blank">Hibernate</a></li>
          
            <li><a href="https://netty.io" target="_blank">Netty</a></li>
          
            <li><a href="https://resteasy.github.io" target="_blank">RESTEasy</a></li>
          
            <li><a href="https://camel.apache.org" target="_blank">Apache Camel</a></li>
          
            <li><a href="https://code.quarkus.io/" target="_blank">And many more...</a></li>
          
        </ul>
      </div>
    
  </div>
</div>
  <div class="content redhat-footer">
  <div class="grid-wrapper">
    <span class="licence">
      <i class="fab fa-creative-commons"></i><i class="fab fa-creative-commons-by"></i> <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC by 3.0</a> | <a href="https://www.redhat.com/en/about/privacy-policy">Privacy Policy</a>
    </span>
    <span class="redhat">
      Sponsored by
    </span>
    <span class="redhat-logo">
      <a href="https://www.redhat.com/" target="_blank"><img src="/assets/images/redhat_reversed.svg"></a>
    </span>
  </div>
</div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
  <script type="text/javascript" src="/assets/javascript/mobile-nav.js"></script>
  <script type="text/javascript" src="/assets/javascript/scroll-down.js"></script>
  <script src="/assets/javascript/satellite.js" type="text/javascript"></script>
  <script src="https://quarkus.io/guides/javascript/config.js" type="text/javascript"></script>
  <script src="/assets/javascript/search-filter.js" type="text/javascript"></script>
  <script src="/assets/javascript/back-to-top.js" type="text/javascript"></script>
</body>

</html>
